home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / libs / wgraf102 / warpgraf.doc < prev    next >
Text File  |  1991-01-30  |  12KB  |  421 lines

  1.                        The Warp Graphics Library
  2.  
  3.                               Version 1.02
  4.  
  5.                                 written
  6.  
  7.                                    by
  8.  
  9.                               Trevor Bell
  10.  
  11.                              Copyright 1991
  12.  
  13.  
  14. WHAT IT IS:
  15.  
  16.         The Warp Graphics Library is a full-featured graphics library.
  17. Do not be fooled by the small file sizes, the binary drivers are
  18. written in assembly language and the libraries are in well-optimized
  19. C++, contributing to the small sizes.
  20.         It supports both EGA and VGA graphics modes.  It has support for
  21. multiple open windows, scrolling up and down in windows, line drawing,
  22. box drawing, highlighting areas of the screen, saving and restoring
  23. windows, and many other features.  A small demonstration program is
  24. provided to show off some of these features and you may modify it.
  25.  
  26.         Warp Graphics is NOT PUBLIC DOMAIN, Warp Graphics IS SHAREWARE.  A
  27. registration fee of $50 (of course I won't mind if you send more than
  28. $50) is required if you wish to use Warp Graphics in any application to be
  29. distributed to the general public.  Registration will get you the full
  30. source code for the Turbo C++ libraries and library files for each of the
  31. 6 memory models (tiny, small, medium, compact, large, huge), and
  32. the source code for the driver files (VGA.BIN and EGA.BIN).  Without
  33. registration you will be limited to compiling programs in the small
  34. memory model and this will substantially limit programs.  By registering
  35. this program you will be contributing to the release of future versions
  36. of Warp Graphics and future programs that I will be creating.  Your
  37. registration will be greatly appreciated.  See the file ORDER.FRM for
  38. details on registering.
  39.  
  40. Registrations may be sent to:
  41.  
  42.         Trevor Bell
  43.         P.O. Box 4173
  44.         Redondo Beach, CA  90278
  45.  
  46. I can be contacted on THE SOURCE BBS at 213-371-3737.
  47.  
  48.  
  49.  
  50. HOW TO USE IT:
  51.  
  52. --------------------------------------------------------------------------------
  53.  
  54.               Using the Warp Graphics Library in Turbo C++
  55.  
  56. --------------------------------------------------------------------------------
  57.  
  58. The file GRAPH.HPP must be included into any C++ file in which you wish
  59. to use the Warp Graphics library and WGRAPHS.LIB must be linked into the
  60. EXE file.
  61.  
  62.  
  63. Initializing the graphics driver:
  64. ---------------------------------
  65.  
  66. main_gui.read(char *path);
  67.  
  68. Before any graphics operations are performed the graphics driver must be
  69. initialized.  To do this simply put the line above with the path to the
  70. proper graphics driver, like this:
  71.  
  72. for VGA only:
  73.  
  74. main_gui.read("VGA.BIN");
  75.  
  76. or for EGA only:
  77.  
  78. main_gui.read("EGA.BIN");
  79.  
  80.  
  81. Setting the graphics mode:
  82. --------------------------
  83.  
  84. main_gui.set_mode();
  85.  
  86. Issuing the command above will set the appropriate graphics mode for the
  87. driver that has been loaded into memory.  Warp Graphics operates in
  88. 640 X 350 X 16 colors in EGA mode and 640 X 480 X 16 colors in VGA mode.
  89.  
  90.  
  91. Restoring the text mode:
  92. ------------------------
  93.  
  94. main_gui.text_mode();
  95.  
  96. Issuing the command above will restore the standard text mode when you
  97. wish to exit the program.
  98.  
  99.  
  100. Filling the screen:
  101. -------------------
  102.  
  103. main_gui.fill_screen(unsigned char color)
  104.  
  105. Issuing the above command with an appropriate argument will clear the
  106. screen to the selected color.  It can be used like this:
  107.  
  108. main_gui.fill_screen(1);
  109.  
  110. This will fill the screen with a dark blue color.
  111.  
  112.  
  113. Saving the screen:
  114. ------------------
  115.  
  116. main_gui.save_screen()
  117.  
  118. Issuing the above command will save the current graphics screen to a
  119. memory buffer for later restoration.  In the small memory model you will
  120. not be able to save the screen because there is not enough available
  121. memory.
  122.  
  123.  
  124. Restoring the screen:
  125. ---------------------
  126.  
  127. main_gui.restore_screen()
  128.  
  129. Issuing the above command will restore a previously saved graphics
  130. screen.  In the small memory model you will not be able to restore the
  131. screen because there is not enough memory available to save the screen
  132. in the first place.
  133.  
  134.  
  135. Scrolling an area of the screen:
  136. --------------------------------
  137.  
  138. main_gui.scroll(unsigned int x1, unsigned int y1, unsigned int x2,
  139.     unsigned int y2, unsigned char color, int lines);
  140.  
  141. Issuing the above command with the appropriate arguments will scroll the
  142. screen.  The x and y arguments represent coordinate values on the
  143. screen.  The lines argument is the number of scan lines you wish to
  144. scroll the screen, a positive value in this field will scroll the screen
  145. upward and a negative value will scroll it downward.
  146.  
  147. To scroll the screen upward fifteen lines in EGA mode and clear the
  148. unused portion of the screen to black would be accomplished like this:
  149.  
  150. main_gui.scroll(0, 0, 640, 349, 0, 15);
  151.  
  152.  
  153. Drawing a point:
  154. ----------------
  155.  
  156. void point::put(unsigned int x, unsigned int y, unsigned char color);
  157.  
  158. To draw a point, a structure of type point must first be defined like this:
  159.  
  160. point point_structure;
  161.  
  162. Then the following command can be issued to draw a point in bright white:
  163.  
  164. point_structure.put(0,0,20,0,15);
  165.  
  166.  
  167. Drawing a line:
  168. ---------------
  169.  
  170. void line::put(unsigned int x1, unsigned int y1, unsigned int x2,
  171.     unsigned int y2, unsigned char color);
  172.  
  173. To draw a line, a structure of type line must first be defined like this:
  174.  
  175. line line_structure;
  176.  
  177. Then the following command can be issued to draw a horizontal line in
  178. bright white:
  179.  
  180. line_structure.put(0,0,20,0,15);
  181.  
  182.  
  183. Loading fonts:
  184. --------------
  185.  
  186. A font structure must be defined before any fonts can be loaded, like
  187. this:
  188.  
  189. font type_face(8,15);
  190.  
  191. Then the fontpointer variable must be loaded with the address of this
  192. new font structure like this:
  193.  
  194. fontpointer =& type_face;
  195.  
  196. Then the font must be loaded into memory like this:
  197.  
  198. fontpointer->load_font("STANDARD.FNT");
  199.  
  200. Only one font is provided in the unregistered version, however 40 fonts
  201. are provided in the registered version.
  202.  
  203.  
  204. Drawing boxes:
  205. --------------
  206.  
  207. Before any boxes can be drawn, a structure of type boxes must be defined
  208. like this:
  209.  
  210. boxes box_structure;
  211.  
  212.  
  213. Drawing an unfilled box:
  214. ------------------------
  215.  
  216. After defining a box structure the following command can be issued to
  217. draw an unfilled box of the color white:
  218.  
  219. box_structure.box(0,0,50,50,15);
  220.  
  221.  
  222. Drawing a filled box:
  223. ---------------------
  224.  
  225. After defining a box structure the following command can be issued to
  226. draw a filled box of the color white:
  227.  
  228. box_structure.filled_box(0,0,50,50,15);
  229.  
  230.  
  231. Drawing a radio button:
  232. -----------------------
  233.  
  234. After defining a box structure the following command can be issued to
  235. draw a radio button:
  236.  
  237. box_structure.radio_button("Button",0,0,50,50);
  238.  
  239.  
  240. Drawing a checked box:
  241. ----------------------
  242.  
  243. After defining a box structure the following command can be issued to
  244. draw a checked box in the color white:
  245.  
  246. box_structure.check_box("Checked Box  ",0,0,15);
  247.  
  248.  
  249. Creating a window:
  250. ------------------
  251.  
  252. windows::windows(unsigned int xx1, unsigned int yy1, unsigned int xx2,
  253.     unsigned int yy2, unsigned char color, unsigned char background,
  254.     enum opts options);
  255.  
  256. The first four arguments are simply coordinate values, the next two
  257. represent the foreground and background colors of the window.  The last
  258. argument is an enumerated type which allows you to set several options
  259. in the window, including horizontal centering, vertical centering, auto
  260. downward scrolling, and auto upward scrolling.
  261.  
  262. To create a window, a structure of type windows must be defined like
  263. this:
  264.  
  265. windows new_window(0,0,50,50,7,0,window::none);
  266.  
  267. Then the windowpointer variable must be assigned to the window, like
  268. this:
  269.  
  270. windowpointer =& new_window;
  271.  
  272. Then the window should be reset like this:
  273.  
  274. windowpointer->reset();
  275.  
  276.  
  277. Putting a border on the window:
  278. -------------------------------
  279.  
  280. void windows::border(unsigned char color, unsigned char color2,
  281.     unsigned int width);
  282.  
  283. After a window has been defined, a border can be put around it with one
  284. color on the top and left edges and another color on the bottom and
  285. right edges to provide a sort of shadow effect.  The last argument
  286. represents the width of the window's border. This can be set like
  287. this:
  288.  
  289. windowpointer->border(15,8,3);
  290.  
  291.  
  292. Putting text in the window:
  293. ---------------------------
  294.  
  295. void windows::text(char *text, unsigned int andwith, unsigned int x,
  296.     unsigned int y, unsigned char color, unsigned char background);
  297.  
  298. The text variable represents a text string to be placed in the window,
  299. the andwith variable determines whether the background variable is used
  300. or not.  The x and y variables determine the location of the string on
  301. the screen, and the color and background variables determine the
  302. foreground and background colors of the text.
  303.  
  304. A character string in bright white can be placed in the window like this:
  305.  
  306. windowpointer->text("Text string.",0,0,0,15,0);
  307.  
  308.  
  309. Scrolling the window:
  310. ---------------------
  311.  
  312. void windows::scroll(int lines);
  313.  
  314. The window can be scrolled with the scroll command.  Putting a positive
  315. value for lines will scroll the screen upward, while a negative value
  316. will scroll it downward.
  317.  
  318. The window could be scrolled upward 15 lines like this:
  319.  
  320. windowpointer->scroll(15);
  321.  
  322.  
  323. Saving a window:
  324. ----------------
  325.  
  326. void windows::save(void);
  327.  
  328. Issuing the above command will save the current window to a
  329. memory buffer for later restoration.  In the small memory model you will
  330. not be able to save the window because there is not enough available
  331. memory.
  332.  
  333. Saving the window is accomplished like this:
  334.  
  335. windowpointer->save();
  336.  
  337.  
  338. Restoring a window:
  339. -------------------
  340.  
  341. void windows::restore(void);
  342.  
  343. Issuing the above command will restore a previously saved window.
  344. In the small memory model you will not be able to restore the
  345. window because there is not enough memory available to save the window
  346. in the first place.
  347.  
  348. Restoring the window is accomplished like this:
  349.  
  350. windowpointer->restore();
  351.  
  352.  
  353. Putting a cursor in the window:
  354. -------------------------------
  355.  
  356. void windows::put_cursor(unsigned int x, unsigned int y, unsigned char color);
  357.  
  358. A bright white cursor can be placed in the window like this:
  359.  
  360. windowpointer->put_cursor(0,0,15);
  361.  
  362.  
  363. Removing a cursor from the window:
  364. -------------------------------
  365.  
  366. void windows::remove_cursor(unsigned int x, unsigned int y,
  367.         unsigned char background);
  368.  
  369. A cursor can be removed from the window like this:
  370.  
  371. windowpointer->remove_cursor();
  372.  
  373.  
  374. --------------------------------------------------------------------------------
  375.  
  376.                              CODE EXAMPLES
  377.  
  378. --------------------------------------------------------------------------------
  379.  
  380.  
  381. A very simple demo program is provided with Warp Graphics to demonstrate
  382. it's capabilities very minimally.  Feel free to modify it to your
  383. heart's desire, keep in mind however that without registration your
  384. program will need to remain within the small memory model.
  385.  
  386. The source code for this program is provided in the file DEMO.CPP
  387. Turbo C++.
  388.  
  389.  
  390.  
  391. --------------------------------------------------------------------------------
  392.  
  393.                                 SUPPORT
  394.  
  395. --------------------------------------------------------------------------------
  396.  
  397.  
  398. Support can be obtained through mail sent to my P.O. Box or by calling the
  399. following BBS:
  400.  
  401.         The Source
  402.         213-371-3737
  403.  
  404.  
  405. --------------------------------------------------------------------------------
  406.  
  407.                             VERSION HISTORY
  408.  
  409. --------------------------------------------------------------------------------
  410.  
  411.  
  412. Version 1.00:
  413.         not released to the public
  414.  
  415. Version 1.01:
  416.         My first release!
  417.  
  418. Version 1.02:
  419.         I forgot to include the fonts in the ZIP file (whoops!).
  420.  
  421.